GBase 8a导出加载数据时,字段内容包含换行\n怎么处理 – 老紫竹的家

您所在的位置:网站首页 gbase 导入数据 GBase 8a导出加载数据时,字段内容包含换行\n怎么处理 – 老紫竹的家

GBase 8a导出加载数据时,字段内容包含换行\n怎么处理 – 老紫竹的家

2023-12-28 15:50| 来源: 网络整理| 查看: 265

发表于2020年10月30日2021年7月7日 作者 laozizhu

GBase 8a数据库集群,支持导出时指定行分隔符和列分隔符,如果数据中的字符和其冲突,可以考虑用多个字符做分隔符,当然也可以用不常见或冲突几率低的不可见字符做分隔符。

目录导航

如果原始数据有包围符

可以通过having LINES SEPARATOR参数来加载。完整语法可以参考 GBase 8a 集群加载数据LOAD的方法

数据 [root@gbase_rh7_001 gbase]# cat t2_2.txt 99,'ABCD EFG','2021-07-07' 100,'1234 5678','2021-07-07' [root@gbase_rh7_001 gbase]# 加载效果

注意指定date_format 以及后面的enclosed by参数。

gbase> load data infile 'sftp://gbase:[email protected]/home/gbase/t2_2.txt' into table t2 data_format 3 having LINES SEPARATOR fields terminated by ',' enclosed by '''' autofill; Query OK, 2 rows affected (Elapsed: 00:00:01.41) Task 9253 finished, Loaded 2 records, Skipped 0 records gbase> select * from t2; +------+-----------+------------+---------+----------+ | id | name | birthday | commons | loadtime | +------+-----------+------------+---------+----------+ | 100 | 1234 5678 | 2021-07-07 | NULL | NULL | | 99 | ABCD EFG | 2021-07-07 | NULL | NULL | +------+-----------+------------+---------+----------+ 2 rows in set (Elapsed: 00:00:00.02) 行分隔符

默认的行分隔符是换行'\n'

lines terminated by '\n'

其支持指定多个,比如用 '\n\n' ,‘ABC\n' 多个字符代表行分隔符,或者1到多个不可见字符 \xFF。

关于不可见字符的使用,请参考 GBase 8a导出和加载使用多个不可见字符做分隔符

加载样例 表结构

四个列的varchar(10)的字段,用来测试数据中带换行符的。

gbase> create table t2(v1 varchar(10),v2 varchar(10),v3 varchar(10),v4 varchar(10)); Query OK, 0 rows affected (Elapsed: 00:00:01.48) 数据

包含两行,用逗号做字段分隔符,数据中包含换行符,最多只有一个。用两个换行作为行分隔符

[gbase@rh6-1 ~]$ cat t2.txt AA,B B,CC,DD AAA,BBB B,CC CC,DD DD 加载

正常加载入库,指定2个换行作为行分隔符。

gbase> load data infile 'sftp://gbase:[email protected]/home/gbase/t2.txt' into table t2 fields terminated by ',' lines terminated by '\n\n'; Query OK, 2 rows affected (Elapsed: 00:00:06.80) Task 336744 finished, Loaded 2 records, Skipped 0 records 查询

查询结果和预期相符。

gbase> select * from t2 \G *************************** 1. row *************************** v1: AAA v2: BBB B v3: CC CC v4: DD DD *************************** 2. row *************************** v1: AA v2: B B v3: CC v4: DD 2 rows in set (Elapsed: 00:00:00.40) 另一个例子

用ZTE\n做行分隔符

[gbase@rh6-1 ~]$ cat t2.txt AA,B B,CC,DDZTE AAA,BBB B,CC CC,DD DDZTE [gbase@rh6-1 ~]$ gccli testdb GBase client 8.6.2.43-R28.122445. Copyright (c) 2004-2020, GBase. All Rights Reserved. gbase> truncate table t2; Query OK, 2 rows affected (Elapsed: 00:00:01.40) gbase> load data infile 'sftp://gbase:[email protected]/home/gbase/t2.txt' into table t2 fields terminated by ',' lines terminated by 'ZTE\n'; Query OK, 2 rows affected (Elapsed: 00:00:16.80) Task 338893 finished, Loaded 2 records, Skipped 0 records gbase> select * from t2 \G *************************** 1. row *************************** v1: AA v2: B B v3: CC v4: DD *************************** 2. row *************************** v1: AAA v2: BBB B v3: CC CC v4: DD DD 2 rows in set (Elapsed: 00:00:00.10) 导出样例

参数是一致的。

gbase> select * from t2 into outfile '/home/gbase/t2_out.txt' fields terminated by ',' ESCAPED BY '' lines terminated by 'ZTE\n'; Query OK, 2 rows affected (Elapsed: 00:00:00.14) gbase> system cat /home/gbase/t2_out.txt AA,B B,CC,DDZTE AAA,BBB B,CC CC,DD DDZTE gbase> 总结

这里只是演示行分隔符可以用多个字符,不单单非得用\n\n, 可以用任意的组合,比如 ’ZTE\n' 用三个字母加换行符做行分隔符,或者按全面参考的文章,不可见字符做分隔符。

导出和导入的参数是对应的。

Post Views: 652 相关文章: GBase 8a集群加载的错误数据导出到指定ftp/sftp/服务器目录下 GBase 8a导出和加载使用多个不可见字符做分隔符 GBase 8a集群导出数据带表头字段名 GBase 8a集群查看加载进度的方法 GBase 8a数据库加载时用户名、密码、路径等有特殊字符的处理 GBase 8a数据库加载LOAD报错信息分析和解决文章汇总 GBase 8a加载通过null_value参数指定null空值的参数 GBase 8a加载错误数据收集参数gbase_loader_logs_collect GBase 8a在V95版本不同列、不同行数文件加载性能测试对比 GBase 8a如何提高加载性能,影响性能的因素有哪些


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3